// const onvif = require('./class/node-onvif');
// const fs = require('fs');
// // // 创建OnvifDevice对象
// let device = new (new onvif()).OnvifDevice({
//     xaddr: 'http://192.168.20.65/onvif/device_service',
//     user: 'admin',
//     pass: 'zl@123456'
// });

// // // 初始化OnvifDevice对象
// // device.init().then((info) => {
// //     // 输出设备的详细信息
// //     let url = device.getUdpStreamUrl();
// //     info = JSON.parse(JSON.stringify(info, null, ' '))
// //     // 初始化OnvifDevice对象
// //     // device.init().then(() => {
// //     //     // 获取快照数据
// //     //     console.log('正在获取快照数据...');
// //     //     return device.fetchSnapshot();
// //     // }).then((res) => {
// //     //     // 将数据保存到文件
// //     //     fs.writeFileSync('snapshot.jpg', res.body, { encoding: 'binary' });
// //     //     console.log('完成！');
// //     // }).catch((error) => {
// //     //     console.error(error);
// //     // });
// //     // info = {
// //     //     ...info,
// //     //     url: url
// //     // }
// //     // // 初始化OnvifDevice对象
// //     device.init().then(() => {
// //         // 移动摄像头
// //         return device.ptzMove({
// //             'speed': {
// //                 x: 1.0, // 水平速度（范围：-1.0到1.0）
// //                 y: 1.0, // 垂直速度（范围：-1.0到1.0）
// //                 z: 0.0  // 缩放速度（范围：-1.0到1.0）
// //             },
// //             'timeout': 1 // 秒数
// //         });
// //     }).then(() => {
// //         console.log('完成！');
// //     }).catch((error) => {
// //         console.error(error);
// //     });
// //     console.log(info);
// //     // 搜索ONVIF网络摄像头
// //     onvif.startProbe().then(device_list => {
// //         // 显示找到的设备信息
// //         console.log(JSON.stringify(device_list, null, '  '));
// //     }).catch(error => {
// //         console.error(error);
// //     });
// //     // let profile = device.getCurrentProfile();
// //     // profile = JSON.stringify(profile)
// //     // console.log(profile)// 获取当前配置文件
    
// //     let profile = device.getCurrentProfile();
// //     // 显示当前配置文件的视频分辨率
// //     let reso = profile['video']['encoder']['resolution'];
// //     console.log('- 在前：' + reso['width'] + ' x ' + reso['height']);

// //     // 获取设备上的配置文件列表
// //     let profile_list = device.getProfileList();

// //     // 查找视频分辨率最小的配置文件
// //     let min_square = 4000 * 2000;
// //     let min_index = 0;
// //     for (let i = 0; i < profile_list.length; i++) {
// //         let resolution = profile_list[i]['video']['encoder']['resolution'];
// //         let square = resolution['width'] * resolution['height'];
// //         if (square < min_square) {
// //             min_square = square;
// //             min_index = i;
// //         }
// //     }
// //     // 更改当前配置文件
// //     profile = device.changeProfile(min_index);
// //     // 显示视频分辨率
// //     reso = profile['video']['encoder']['resolution'];
// //     console.log('- 后来：' + reso['width'] + ' x ' + reso['height']);
// // }).catch((error) => {
// //     console.error(error);
// // });

// // 获取摄像头的介质服务
// device.getMedia().then(async media => {
//     // 获取视频源配置
//     const videoSourceConfig = await media.getVideoSourceConfiguration({
//         ProfileToken: media.config.profiles[0].token
//     });
    
//     // 设置焦距，这个值可能需要根据摄像头的具体规格来设置
//     const newFocus = {
//         ProfileToken: media.config.profiles[0].token,
//         ConfigurationToken: videoSourceConfig.token,
//         Focus: {
//         Auto: false,
//         Manual: {
//             Value: 50 // 焦距的具体值，范围可能因摄像头而异
//         }
//         }
//     };
    
//     // 调用设置焦距的命令
//     const response = await media.setVideoSourceConfiguration(newFocus);
//     console.log('Focus set to:', response.Focus.Manual.Value);
// })

const OnvifManager = require('node-onvif').OnvifDevice;
 
// 设备的IP地址、用户名和密码
//     xaddr: 'http://192.168.20.65/onvif/device_service',
//     user: 'admin',
//     pass: 'zl@123456'
const deviceIp = 'http://172.16.16.70/onvif/device_service';
const username = 'admin';
const password = 'zl@123456';
 
// 创建ONVIF设备实例
const onvifDevice = new OnvifManager({
    xaddr: 'http://192.168.20.65/onvif/device_service',
    user: 'admin',
    pass: 'zl@123456'
});
 
// 连接到设备
onvifDevice.connect().then(() => {
    console.log('Connected to ONVIF device.');
 
    // 获取媒体服务
    onvifDevice.getMediaServiceAddress((error, address) => {
        if (error) {
            console.error('Error getting media service address:', error);
            return;
        }
 
        // 创建媒体服务实例
        const mediaUrl = `http://${address}`;
        const media = onvifDevice.getMediaClient(mediaUrl);
 
        // 添加预置位置
        media.addPreset({ ProfileToken: 'Profile1', PTZPresetToken: 'Preset1' }).then(response => {
            console.log('Preset added:', response);
        }).catch(error => {
            console.error('Error adding preset:', error);
        });
    });
}).catch(error => {
    console.error('Connection error:', error);
});